#ifndef LOCATIONS_H
#define LOCATIONS_H

#include <string>
#include <vector>
#include "Sequence.h"

class Locations
{
    public:
        Locations();
        virtual ~Locations();

        int get_seed() { return seed; }
        float get_ident() { return ident; }
        void get_spacers(std::vector<Sequence> &seqs);
        void get_virus_contigs(std::vector<Sequence> &seqs);
        void get_virus_genomes(std::vector<Sequence> &seqs);
        bool get_check_contigs() { return check_contigs; }
        bool get_check_genomes() { return check_genomes; }
        std::string get_results() { return results_dir; }

    protected:
    private:
        std::string spacer_loc;
        std::string contig_loc;
        std::string virus_dir;
        std::string virus_fof;
        std::string results_dir;
        int seed;
        float ident;
        bool check_contigs;
        bool check_genomes;
        int min_seq_len;

        bool file_exists(std::string file);
        void get_from_multifasta(std::vector<Sequence> &seqs, std::string loc, std::string type);
        void get_fastas_from_dir(std::vector<Sequence> &seqs, std::string genomes_dir, std::string genomes_list, std::string type);
};

#endif // LOCATIONS_H
